package com.buddy.learn.source._thread;

/**
 * @author Buddy
 * @date 2021/4/19
 */
public class ThreadVisibility {

    private static volatile boolean flag = true;

    public static void main(String[] args) throws InterruptedException {
        new Thread(()->{
            // 如果 flag 没有 volatile 修饰
            // 在主线程内修改 flag 值，这里不会知晓
            // 因此永远不会退出 while 循环
            while (flag){
                // do sth
            }
            // 只有 flag 由 volatile 修饰后，才可以退出循环打印 end
            System.out.println("end");
        },"server").start();

        Thread.sleep(1000);
        flag = false;
    }
}
